﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using SCS.Common.Models;
using DataAnnotationsExtensions;
using System.Web.Mvc;

namespace SchoolCommunicationSystem.Models
{
    public class ListAdminModel
    {
        public IList<MembershipUser> AdminList { get; set; }
    }
    public class ListTeacherAddViewModel
    {
        public IList<MembershipUser> TeacherList { get; set; }
    }
    public class ListTeacherUpdateViewModel
    {
        public IEnumerable<SelectListItem> SubjectSelectList { get; set; }
        public byte? _subjectID { get; set; }
        public MembershipUser TeacherMembershipUser { get; set; }
        public int TeacherUserID { get; set; }
        public int TeacherRole { get; set; }
    }
    public class ListParentsAddViewModel
    {
        public IList<MembershipUser> ParentsList { get; set; }
    }
    public class ListParentsAddExistViewModel
    {
        public IList<MembershipUser> ParentsList { get; set; }
        public int learnerID { get; set; }
        public int parentID { get; set; }
    }
    public class ChangePasswordViewModel
    {
        [Required(ErrorMessage = "[Mật khẩu hiện tại] không được để trống")]
        [DataType(DataType.Password)]
        public string OldPassword { get; set; }

        [Required(ErrorMessage = "[Mật khẩu mới] không được để trống")]
        [StringLength(100, MinimumLength = 6)]
        [DataType(DataType.Password)]
        public string NewPassword { get; set; }

        [DataType(DataType.Password)]
        [System.ComponentModel.DataAnnotations.Compare("NewPassword", ErrorMessage = "[Mật khẩu mới] và [Nhập lại mật khẩu mới] không giống nhau")]
        public string ConfirmPassword { get; set; }
    }

    public class UserProfilesViewModel
    {
        public MembershipUser MembershipUser { get; set; }
        public Parent Parents { get; set; }
        public Teacher Teacher { get; set; }
    }

    public class AdminAddViewModel
    {
        [Required(ErrorMessage = "Trường không được để trống")]
        [Display(Name = "Tên đăng nhập(*)")]
        public string UserName { get; set; }

        [Email]
        [Required(ErrorMessage = "Trường không được để trống")]
        [Display(Name = "Email(*)")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Trường không được để trống")]
        [StringLength(100, MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Mật khẩu(*)")]
        public string Password { get; set; }

        [Required(ErrorMessage = "Trường không được để trống")]
        [DataType(DataType.Password)]
        [System.ComponentModel.DataAnnotations.Compare("Password")]
        [Display(Name = "Nhập lại mật khẩu(*)")]
        public string ConfirmPassword { get; set; }

        [Required]
        public int MinPasswordLength { get; set; }

        public IList<MembershipRole> AllRoles { get; set; }

        public string ReturnUrl { get; set; }
    }

    public class TeacherAddViewModel
    {
        public IEnumerable<SelectListItem> TeacherSelectList { get; set; }
        public string TeacherName { get; set; }
        public int? TeacherID { get; set; }
        public bool isLeaderTeacher { get; set; }

        [Required(ErrorMessage = "Trường không được để trống")]
        public int _teacherID { get; set; }

        public IEnumerable<SelectListItem> SubjectSelectList { get; set; }
        [Required(ErrorMessage = "Trường không được để trống")]
        public byte? _subjectID { get; set; }

        [Required(ErrorMessage = "Trường không được để trống")]
        [Display(Name = "Tên đăng nhập(*)")]
        public string UserName { get; set; }

        [Email]
        [Required(ErrorMessage = "Trường không được để trống")]
        [Display(Name = "Email(*)")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Trường không được để trống")]
        [StringLength(100, MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Mật khẩu(*)")]
        public string Password { get; set; }

        [Required(ErrorMessage = "Trường không được để trống")]
        [DataType(DataType.Password)]
        [System.ComponentModel.DataAnnotations.Compare("Password")]
        [Display(Name = "Nhập lại mật khẩu(*)")]
        public string ConfirmPassword { get; set; }

        [Required]
        public int MinPasswordLength { get; set; }

        public IList<MembershipRole> AllRoles { get; set; }

        public string ReturnUrl { get; set; }
    }

    public class ParentAddViewModel
    {
        [Required(ErrorMessage = "Trường không được để trống")]
        public Parent parent { get; set; }
        public int _parentID { get; set; }

        [Required(ErrorMessage = "Trường không được để trống")]
        [Display(Name = "Tên đăng nhập(*)")]
        public string UserName { get; set; }

        [Email]
        [Required(ErrorMessage = "Trường không được để trống")]
        [Display(Name = "Email(*)")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Trường không được để trống")]
        [StringLength(100, MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Mật khẩu(*)")]
        public string Password { get; set; }

        [Required(ErrorMessage = "Trường không được để trống")]
        [DataType(DataType.Password)]
        [System.ComponentModel.DataAnnotations.Compare("Password")]
        [Display(Name = "Nhập lại mật khẩu(*)")]
        public string ConfirmPassword { get; set; }

        [Required]
        public int MinPasswordLength { get; set; }

        public IList<MembershipRole> AllRoles { get; set; }

        public string ReturnUrl { get; set; }
    }

    public class LogOnViewModel
    {
        public string ReturnUrl { get; set; }

        [Required]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        public string Password { get; set; }

        public bool RememberMe { get; set; }
    }
    public class ForgotPassWordViewModel
    {
        [Required]
        public string UserName { get; set; }

        [Required]
        public string Phone { get; set; }
    }
}